﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using mx.ipn.escom.tt20080015.modelo.db;
using mx.ipn.escom.tt20080015.modelo.datos;

namespace tt20080015.vistas.especialista
{
    public partial class Paciente : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Session["user"] == null)
                Server.Transfer("~/Default.aspx", false);

            //if(!this.IsPostBack)
            mx.ipn.escom.tt20080015.modelo.db.RegionManager rm = new mx.ipn.escom.tt20080015.modelo.db.RegionManager();
            lPais.DataSource = rm.consultarPaises();
            lPais.DataMember = "paises";
            lPais.DataTextField = "nombre";
            lPais.DataValueField = "id";
            lPais.DataBind();

            lPais.SelectedValue = lPais.Items.FindByText("Mexico").Value;

            lEstado.DataSource = rm.consultarEstados(Convert.ToInt32(lPais.SelectedValue));
            lEstado.DataMember = "estados";
            lEstado.DataTextField = "nombre";
            lEstado.DataValueField = "id";
            lEstado.DataBind();

            if(Request.Params["Id"] != null)
            {
                mx.ipn.escom.tt20080015.modelo.db.PacienteManager pm = new mx.ipn.escom.tt20080015.modelo.db.PacienteManager();
                mx.ipn.escom.tt20080015.modelo.datos.Paciente p = pm.consultar(Convert.ToInt32(Request.Params["Id"]));
                idPacienteHiddenField.Value = p.Id.ToString();
                tbNombre.Text = p.Nombre;
                tbAPaterno.Text = p.APaterno;
                tbAMaterno.Text = p.AMaterno;
                tbFechaNac.Text = p.FechaNacimiento.ToString("dd/MM/yyyy");
                tbSexo.Text = (p.Sexo) ? "" : "m";
                tbCalle.Text = p.Calle;
                tbNoExterior.Text = p.NoExterior;
                tbNoInterior.Text = p.NoInterior;
                tbColonia.Text = p.Colonia;
                lEstado.SelectedValue = p.Estado;

                consultarButton.Visible = true;
                modificarButton.Visible = true;
                eliminarButton.Visible = true;
            }
            if(Context.Items.Contains("Id"))
            {
                idPacienteHiddenField.Value = Context.Items["Id"].ToString();

                mx.ipn.escom.tt20080015.modelo.db.PacienteManager pm = new mx.ipn.escom.tt20080015.modelo.db.PacienteManager();
                mx.ipn.escom.tt20080015.modelo.datos.Paciente p = pm.consultar(Convert.ToInt32(idPacienteHiddenField.Value));
                idPacienteHiddenField.Value = p.Id.ToString();
                tbNombre.Text = p.Nombre;
                tbAPaterno.Text = p.APaterno;
                tbAMaterno.Text = p.AMaterno;
                tbFechaNac.Text = p.FechaNacimiento.ToString("dd/MM/yyyy");
                tbSexo.Text = (p.Sexo) ? "" : "m";
                tbCalle.Text = p.Calle;
                tbNoExterior.Text = p.NoExterior;
                tbNoInterior.Text = p.NoInterior;
                tbColonia.Text = p.Colonia;
                lEstado.SelectedValue = p.Estado;

                consultarButton.Visible = true;
                modificarButton.Visible = true;
                eliminarButton.Visible = true;
                clasificarButton.Visible = true;
            }
        }

        protected void btnRegistrar_Click(object sender, EventArgs e)
        {
            PacienteManager pm = new PacienteManager();
            mx.ipn.escom.tt20080015.modelo.datos.Paciente paciente = new mx.ipn.escom.tt20080015.modelo.datos.Paciente(0, tbNombre.Text,
                    tbAPaterno.Text, tbAMaterno.Text, tbFechaNac.Text, tbSexo.Text.Equals(""), tbCalle.Text,
                    tbNoExterior.Text, tbNoInterior.Text, tbColonia.Text, lEstado.SelectedValue.ToString());

                pm.registrar(paciente);
                //Hay que obtener el id del paciente registrado o podríamos subir el obj paciente y registrar ambos
                int a = pm.consultar("SELECT LAST_INSERT_ID()");
                paciente.Id = a;

                new CasoEstudioManager().registrar(new Mx.Ipn.Escom.tt20080015.modelo.datos.Estudio(a));

                Context.Items.Add("paciente", paciente);
                //Response.Redirect("./CasoEstudio.aspx?id=" + paciente.Id, true);
                Server.Transfer("./CasoEstudio.aspx");
        }

        protected void clasificarButton_Click(object sender, EventArgs e)
        {
            Context.Items.Add("paciente", new mx.ipn.escom.tt20080015.modelo.datos.Paciente(Convert.ToInt32(idPacienteHiddenField.Value),
                tbNombre.Text,
                tbAPaterno.Text,
                tbAMaterno.Text,
                tbFechaNac.Text,
                (tbSexo.Text.Equals("")),
                tbCalle.Text,
                tbNoExterior.Text,
                tbNoInterior.Text,
                tbColonia.Text,
                lEstado.SelectedValue));
            Server.Transfer("./CasoEstudio.aspx", true);
        }

        protected void modificarButton_Click(object sender, EventArgs e)
        {
            PacienteManager pm = new PacienteManager();
            pm.actualizar(new mx.ipn.escom.tt20080015.modelo.datos.Paciente(Convert.ToInt32(idPacienteHiddenField.Value), tbNombre.Text,
                    tbAPaterno.Text, tbAMaterno.Text, tbFechaNac.Text, (tbSexo.Text.Equals("")), tbCalle.Text,
                    tbNoExterior.Text, tbNoInterior.Text, tbColonia.Text, lEstado.SelectedValue.ToString()));

            CasoEstudioManager cem = new CasoEstudioManager();
            cem.registrar(new Mx.Ipn.Escom.tt20080015.modelo.datos.Estudio(Convert.ToInt32(idPacienteHiddenField.Value)));

            Response.Write("<script type=\"text/javascript\">confirm('Datos actualizados')</script>");//Llamar un m{etodo de confirmacion.js
        }

        protected void eliminarButton_Click(object sender, EventArgs e)
        {
            PacienteManager pm = new PacienteManager();
            pm.eliminar(idPacienteHiddenField.Value);
            Response.Write("<script type=\"text/javascript\">confirm('Eliminado')</script>");//Llamar un m{etodo de confirmacion.js
        }
    }
}
